home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-28 | 1.9 KB | 136 lines | [TEXT/MPS ] |
- #ifndef __VECTOR__
- #include "Vector.h"
- #endif
-
- #ifndef __ERRORS__
- #include <errors.h>
- #endif
-
- #ifndef __STDLIB__
- #include <stdlib.h>
- #endif
-
-
-
- //µ Vector::Vector
- #pragma segment Vector
- Vector::Vector()
- : DataArea(),
- fLength(0)
- {
- }
-
-
-
- //µ Vector::IVector
- #pragma segment Vector
- int Vector::IVector(size_t initialSize, size_t increment)
- {
- fLength = 0;
- return (IDataArea(initialSize * sizeof(void *), increment * sizeof(void *)));
- }
-
-
-
-
- //µ Vector::IVector
- #pragma segment Vector
- int Vector::IVector(const Vector *aVector)
- {
- if (aVector == 0)
- return (memPCErr);
- fLength = aVector->fLength;
- return (IDataArea(aVector));
- }
-
-
-
-
- //µ Vector::AtPut
- #pragma segment Vector
- void Vector::AtPut(int i, const void *anItem)
- {
- if (i >= 0 && i < fLength)
- _AtPut(i, anItem);
- }
-
-
-
-
- //µ Vector::IndexOf
- #pragma segment Vector
- int Vector::IndexOf(const void *anItem)
- {
- int n = fLength;
- void **p = (void **)GetData(0);
-
- for (; n; ++p, --n)
- if (*p == anItem)
- return (fLength - n);
-
- return (-1);
- }
-
-
-
-
- //µ Vector::AddOnce
- #pragma segment Vector
- Boolean Vector::AddOnce(const void *anItem)
- {
- return ((IndexOf(anItem) >= 0) ? true : AddItem(anItem));
- }
-
-
-
-
- //µ Vector::AddOnce
- #pragma segment Vector
- Boolean Vector::AddOnce(const Vector *aVector)
- {
- for (int i = 0; i < aVector->Length(); i++)
- if (!AddOnce(aVector->At(i)))
- return (false);
-
- return (true);
- }
-
-
-
-
- //µ Vector::AddItem
- #pragma segment Vector
- Boolean Vector::AddItem(const void *anItem)
- {
- if (Require(sizeof(anItem)) >= sizeof(anItem)) {
- _AtPut(fLength++, anItem);
- IncrCursor(sizeof(anItem));
- return (true);
- }
-
- return (false);
- }
-
-
-
- //µ Vector::Sort
- #pragma segment Vector
- void Vector::Sort(int (*aCompareFunc)(const void *, const void *))
- {
- HLock();
- qsort(*GetHandle(), Length(), sizeof(void*), aCompareFunc);
- HUnlock();
- }
-
-
-
-
- //µ Vector::MakeEmpty
- #pragma segment Vector
- void Vector::MakeEmpty()
- {
- fLength = 0;
- SetCursor(0);
- Truncate();
- }
-